package cn.kgc.spring.day04.dynamic;

import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.InvocationHandler;

/**
 * @author 课工场
 * @date 2024/7/16
 * @description  基于父子类关系的代理 Cglib
 */
public class CglibProxy {

    // 被代理对象
    private Object obj;


    public CglibProxy(Object obj){
        this.obj = obj;
    }

    public Object  getBeanProxy(){

        // 生成代理对象的工具
        Enhancer enhancer = new Enhancer();
        // 设置参数
        enhancer.setSuperclass(obj.getClass());

        InvocationHandler  invocationHandler = (proxy,method,args)->{

            Object invoke = method.invoke(obj, args);

            System.out.println("已经学习一个小时了,休息一下...");
            return invoke;
        };
        enhancer.setCallback(invocationHandler);

        // 代理对象
        Object o = enhancer.create();


        return  o;
    }
}
